Handle gdk_window_beep on offscreen windows
authorAlexander Larsson <alexl@redhat.com>
Thu, 11 Jun 2009 20:11:48 +0000 (22:11 +0200)
committerAlexander Larsson <alexl@redhat.com>
Thu, 11 Jun 2009 20:11:48 +0000 (22:11 +0200)
gdk/gdk.symbols
gdk/gdkinternals.h
gdk/gdkwindow.c
gdk/x11/gdkwindow-x11.c

index d7ec27cec5a5ae3d4d79f76508e1747d1ebf5e07..b94a4dc5fa3e964c8740f01dab40fb3134dde798 100644 (file)
@@ -715,6 +715,7 @@ gdk_window_thaw_toplevel_updates_libgtk_only
 gdk_window_thaw_updates
 gdk_window_set_composited
 gdk_pointer_grab
+gdk_window_beep
 #endif
 #endif
 
@@ -758,7 +759,6 @@ gdk_window_set_focus_on_map
 gdk_window_set_icon_list
 gdk_window_set_icon
 gdk_window_set_icon_name
-gdk_window_beep
 gdk_window_set_opacity
 gdk_window_iconify
 gdk_window_deiconify
index cb140068c9dd217d684e60d21f59cc9e759c32f9..4f0d6669815b921b83acd46c291c03a98319da3b 100644 (file)
@@ -438,11 +438,12 @@ gchar *_gdk_windowing_substitute_screen_number (const gchar *display_name,
 
 gulong   _gdk_windowing_window_get_next_serial  (GdkDisplay *display);
 void     _gdk_windowing_window_get_offsets      (GdkWindow  *window,
-                                                                                                gint       *x_offset,
-                                                                                                gint       *y_offset);
+                                                gint       *x_offset,
+                                                gint       *y_offset);
 GdkRegion *_gdk_windowing_window_get_shape      (GdkWindow  *window);
 GdkRegion *_gdk_windowing_window_get_input_shape(GdkWindow  *window);
 GdkRegion *_gdk_windowing_get_shape_for_mask    (GdkBitmap *mask);
+void     _gdk_windowing_window_beep             (GdkWindow *window);
 
 
 void       _gdk_windowing_get_pointer        (GdkDisplay       *display,
index b843b088689ced574f2d36f560c29a389b1d80d2..2b6adc7757e779731d19f80cafdc6662f8ae1839 100644 (file)
@@ -8089,6 +8089,36 @@ _gdk_window_find_descendant_at (GdkWindow *toplevel,
   return (GdkWindow *)private;
 }
 
+/**
+ * gdk_window_beep:
+ * @window: a toplevel #GdkWindow
+ *
+ * Emits a short beep associated to @window in the appropriate
+ * display, if supported. Otherwise, emits a short beep on
+ * the display just as gdk_display_beep().
+ *
+ * Since: 2.12
+ **/
+void
+gdk_window_beep (GdkWindow *window)
+{
+  GdkDisplay *display;
+  GdkWindow *toplevel;
+
+  g_return_if_fail (GDK_IS_WINDOW (window));
+
+  if (GDK_WINDOW_DESTROYED (window))
+    return;
+
+  toplevel = get_event_toplevel (window);
+  display = gdk_drawable_get_display (GDK_DRAWABLE (window));
+
+  if (toplevel && gdk_window_is_offscreen ((GdkWindowObject *)toplevel))
+    _gdk_windowing_window_beep (toplevel);
+  else
+    gdk_display_beep (display);
+}
+
 static const guint type_masks[] = {
   GDK_SUBSTRUCTURE_MASK, /* GDK_DELETE                 = 0  */
   GDK_STRUCTURE_MASK, /* GDK_DESTROY                   = 1  */
index 2d57c761e7dafd555e409c6be21498c2bd2b1a2f..291d25d46b6d357059e9441ce5260f421d8d1baf 100644 (file)
@@ -5423,26 +5423,13 @@ gdk_window_configure_finished (GdkWindow *window)
 #endif
 }
 
-/**
- * gdk_window_beep:
- * @window: a toplevel #GdkWindow
- *
- * Emits a short beep associated to @window in the appropriate
- * display, if supported. Otherwise, emits a short beep on
- * the display just as gdk_display_beep().
- *
- * Since: 2.12
- **/
 void
-gdk_window_beep (GdkWindow *window)
+_gdk_windowing_window_beep (GdkWindow *window)
 {
   GdkDisplay *display;
 
   g_return_if_fail (GDK_IS_WINDOW (window));
 
-  if (GDK_WINDOW_DESTROYED (window))
-    return;
-  
   display = GDK_WINDOW_DISPLAY (window);
 
 #ifdef HAVE_XKB